// server.js
const express = require('express');
const fs = require('fs');
const path = require('path');

const app = express();
const PORT = 3000;
const DATA_FILE = path.join(__dirname, 'submissions.txt');
const ADMIN_PASSWORD = 'sanbing@2025'; // 🔒 建议用环境变量！

app.use(express.json({ limit: '10mb' }));
// 指定静态文件目录（比如你的 HTML、CSS、JS 放在 public 文件夹）
app.use(express.static(path.join(__dirname, 'public')));

// 允许跨域（开发用）
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', 'GET, POST');
    next();
});

// POST /submit —— 接收咨询并保存（带时间戳）
app.post('/submit', (req, res) => {
    const { name, company, email, phone, inquiryType, message } = req.body;

    // 简单验证
    if (!name || !email) {
        return res.status(400).json({ error: '姓名和邮箱为必填项' });
    }

    // 添加时间戳（ISO 8601 格式）
    const record = {
        name,
        company: company || '',
        email,
        phone: phone || '',
        inquiryType: inquiryType || '',
        message: message || '',
        timestamp: new Date().toISOString() // 例如：2025-10-11T14:25:00.123Z
    };

    const line = JSON.stringify(record) + '\n';

    fs.appendFile(DATA_FILE, line, (err) => {
        if (err) {
            console.error('写入失败:', err);
            return res.status(500).json({ error: '保存失败' });
        }
        console.log('✅ 新记录已保存:', record);
        res.status(200).json({ message: '提交成功！' });
    });
});

// GET /submissions —— 获取所有记录（倒序：最新在前）
app.get('/submissions', (req, res) => {
    const authHeader = req.headers.authorization; // 推荐用 Authorization 头

    // 也可以从 query 参数或 body 传，但 header 更规范
    if (!authHeader || authHeader !== `Bearer ${ADMIN_PASSWORD}`) {
        return res.status(401).json({
            error: true,
            message: '需要管理员密码才能访问咨询记录'
        });
    }
    fs.readFile(DATA_FILE, 'utf8', (err, data) => {
        if (err) {
            if (err.code === 'ENOENT') {
                // 文件不存在，返回空数组
                return res.json([]);
            }
            console.error('读取文件失败:', err);
            return res.status(500).json({ error: '读取记录失败' });
        }

        // 按行分割，过滤空行，解析 JSON
        const lines = data
            .split('\n')
            .filter(line => line.trim() !== '')
            .map(line => {
                try {
                    return JSON.parse(line);
                } catch (e) {
                    console.warn('跳过无效行:', line);
                    return null;
                }
            })
            .filter(record => record !== null); // 移除解析失败的

        // 倒序：最新提交在最前面
        const reversed = lines.reverse();

        res.json(reversed);
    });
});
// DELETE /submissions —— 清空记录（需密码）
app.delete('/submissions', (req, res) => {
    const { password } = req.body;

    // 验证密码
    if (password !== ADMIN_PASSWORD) {
        return res.status(401).json({ message: "❌ 管理员密码错误！" });
    }

    // 清空文件
    try {
        fs.writeFileSync(DATA_FILE, '', 'utf8');
        res.json({ success: true, message: "所有记录已清空" });
    } catch (err) {
        console.error("清空文件失败:", err);
        res.status(500).json({ message: "服务器内部错误" });
    }
});

app.listen(PORT, () => {
    console.log(`✅ 服务启动: http://localhost:${PORT}`);
    console.log(`📝 数据文件: ${DATA_FILE}`);
});